/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package grafico.calculos;

import calculos.MetodoCC;
import calculos.MetodoCalculo;
import presenter.PacientePresenter;
import persistencia.Pacientes;
import model.Paciente;
import model.ResultadoAvaliacao;

/**
 *
 * @author Kdc
 */
public class CalcularCC implements CalcularClassificacao {
    
    private int idealF = 0;
    private int elevadoF = 0;
    private int muitoElevadoF = 0;
    
    private int idealM = 0;
    private int elevadoM = 0;
    private int muitoElevadoM = 0;
    
    private int qntMulheres = 0;
    private int qntHomens = 0;
    
    private MetodoCalculo metodoCalculo;
    private Pacientes pacientes = new Pacientes();
    private PacientePresenter controlaPaciente = new PacientePresenter(pacientes);
    ResultadoAvaliacao resultadoAvaliacao;

    public CalcularCC() {
        
        calcularClassificacaoFeminino();
        calcularClassificacaoMaculino();
        
    }

    
    
    
    @Override
    public void calcularClassificacaoFeminino() {
        
        controlaPaciente.carregarPacientes();
        
        for (int i = 0; i < pacientes.getPacientes().size(); i++) 
        {
            Paciente paciente = pacientes.getPacientes().get(i);
            
            metodoCalculo = new MetodoCC();
            metodoCalculo.calcula(paciente);
            
            if (paciente.getSexo() == 'F')
            {
                qntMulheres = qntMulheres + 1;
                
                 for (int j = 0; j < paciente.getResultados().size(); j++) 
                {    
                    if(paciente.getResultados().get(j).getMetodo().equalsIgnoreCase("CC"))
                    {
                        resultadoAvaliacao = paciente.getResultados().get(j);
                    }
                }
                
                if (resultadoAvaliacao.getCondicao().equalsIgnoreCase("Ideal")) 
                {
                    idealF++;
                    
                } else if (resultadoAvaliacao.getCondicao().equalsIgnoreCase("Elevado")) 
                {
                    elevadoF++;
                    
                } else if (resultadoAvaliacao.getCondicao().equalsIgnoreCase("Muito Elevado")) 
                {
                    muitoElevadoF++;
                    
                }

            }
        }
        calcularPorcentagemFeminino();

    }

    private void calcularPorcentagemFeminino() 
    {
        idealF = (idealF * 100) / qntMulheres;
        elevadoF = (elevadoF * 100) / qntMulheres;
        muitoElevadoF = (muitoElevadoF * 100) / qntMulheres;
        
    }
    

    @Override
    public void calcularClassificacaoMaculino() {
     
        controlaPaciente.carregarPacientes();
        
        for (int i = 0; i < pacientes.getPacientes().size(); i++) 
        {
            Paciente paciente = pacientes.getPacientes().get(i);
            
            metodoCalculo = new MetodoCC();
            metodoCalculo.calcula(paciente);
            
            if (paciente.getSexo() == 'M')
            {
                qntHomens = qntHomens + 1;
                
                for (int j = 0; j < paciente.getResultados().size(); j++) 
                {    
                    if(paciente.getResultados().get(j).getMetodo().equalsIgnoreCase("CC"))
                    {
                        resultadoAvaliacao = paciente.getResultados().get(j);
                    }
                }
                
                if (resultadoAvaliacao.getCondicao().equalsIgnoreCase("Ideal")) 
                {
                    idealM++;
                    
                } else if (resultadoAvaliacao.getCondicao().equalsIgnoreCase("Elevado")) 
                {
                    elevadoM++;
                    
                } else if (resultadoAvaliacao.getCondicao().equalsIgnoreCase("Muito Elevado")) 
                {
                    muitoElevadoM++;
                    
                }

            }
        }
        calcularPorcentagemMasculino();
        
    }
    
    private void calcularPorcentagemMasculino() 
    {
        idealM = (idealM * 100) / qntHomens;
        elevadoM = (elevadoM * 100) / qntHomens;
        muitoElevadoM = (muitoElevadoM * 100) / qntHomens;
        
    }

    public int getIdealF() {
        return idealF;
    }

    public void setIdealF(int idealF) {
        this.idealF = idealF;
    }

    public int getElevadoF() {
        return elevadoF;
    }

    public void setElevadoF(int elevadoF) {
        this.elevadoF = elevadoF;
    }

    public int getMuitoElevadoF() {
        return muitoElevadoF;
    }

    public void setMuitoElevadoF(int muitoElevadoF) {
        this.muitoElevadoF = muitoElevadoF;
    }

    public int getIdealM() {
        return idealM;
    }

    public void setIdealM(int idealM) {
        this.idealM = idealM;
    }

    public int getElevadoM() {
        return elevadoM;
    }

    public void setElevadoM(int elevadoM) {
        this.elevadoM = elevadoM;
    }

    public int getMuitoElevadoM() {
        return muitoElevadoM;
    }

    public void setMuitoElevadoM(int muitoElevadoM) {
        this.muitoElevadoM = muitoElevadoM;
    }

    public int getQntMulheres() {
        return qntMulheres;
    }

    public void setQntMulheres(int qntMulheres) {
        this.qntMulheres = qntMulheres;
    }

    public int getQntHomens() {
        return qntHomens;
    }

    public void setQntHomens(int qntHomens) {
        this.qntHomens = qntHomens;
    }

    public MetodoCalculo getMetodoCalculo() {
        return metodoCalculo;
    }

    public void setMetodoCalculo(MetodoCalculo metodoCalculo) {
        this.metodoCalculo = metodoCalculo;
    }

    public Pacientes getPacientes() {
        return pacientes;
    }

    public void setPacientes(Pacientes pacientes) {
        this.pacientes = pacientes;
    }

    public PacientePresenter getControlaPaciente() {
        return controlaPaciente;
    }

    public void setControlaPaciente(PacientePresenter controlaPaciente) {
        this.controlaPaciente = controlaPaciente;
    }
    
    
}
